package com.xctech.ipb.dpn.common.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * 分页数据包装类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class PageData<T> implements Serializable {
    
    /**
     * 当前页码
     */
    private int pageNum;
    
    /**
     * 每页大小
     */
    private int pageSize;
    
    /**
     * 总记录数
     */
    private long total;
    
    /**
     * 数据列表
     */
    private List<T> list;
    
    /**
     * 总页数
     */
    public long getTotalPages() {
        if (pageSize == 0) {
            return 0;
        }
        return (total + pageSize - 1) / pageSize;
    }
    
    /**
     * 是否有下一页
     */
    public boolean hasNext() {
        return pageNum < getTotalPages();
    }
    
    /**
     * 是否有上一页
     */
    public boolean hasPrevious() {
        return pageNum > 1;
    }
}
